'''
语法：
    select
            查询列表
    from
            表名
    where
            筛选条件；
分类：
    一。按条件表达式筛选
    条件运算符：> < = <> >= <=
    二。按逻辑表达式筛选
    逻辑运算符：and not or
    三。模糊查询
        like
        between and 1.间接语句 2.包含临界值 3.临界值是先 >= 在 <=,顺序不能弄错
        in  1.括号里的数值类型要统一  2.不支持通配符
        is null 或者 is not null
        通配符:
            % 代表任意多个字符 包括0个字符
            _ 代表单个字符
'''
import pymysql
conn = pymysql.connect(
    host='localhost',
    user='root',
    passwd='123456',
    db='db_library',
    port=3306,
    charset='utf8'
)
cur = conn.cursor()

# 一.    按条件表达式筛选
# 案例1.：查询年龄 >10 的人的信息
# w = "SELECT name FROM test WHERE age>10"
# cur.execute(w)
# ret = cur.fetchall()
# print(ret)

# 案例2.：查询性别不是男的的人名和年龄
# w = "SELECT name,age FROM test WHERE gender<>'男'"
# cur.execute(w)
# ret = cur.fetchall()
# print(ret)

# 二.    按逻辑表达式筛选
# 案例1. 查询年龄在8 到 15 之间的人和年龄
# w = "SELECT name,age FROM test WHERE age>8 AND age<15"
# cur.execute(w)
# ret = cur.fetchall()
# print(ret)


# 三.    模糊查询 like 1.2    between and 3    in 4     is null 5
# 案例1. 查询名字中包含 他 的人名
# w = "SELECT * FROM test WHERE name LIKE '%%'"
# cur.execute(w)
# ret = cur.fetchall()
# r = cur.description
# print(r)
# print(ret)
# conn.commit()

# 案例2.  查询人名中第三个字是 有 的人名
# w = "SELECT * FROM test WHERE name LIKE '__有%'"
# cur.execute(w)
# ret = cur.fetchall()
# print(ret)

# 案例3.  查询年龄在10到15之间的人
# w = "SELECT * FROM test WHERE age BETWEEN 10 AND 15"
# cur.execute(w)
# ret = cur.fetchall()
# print(ret)

# 案例4.  查询年龄是12,14,15,20 的员工
# w = "SELECT * FROM test WHERE age IN (12,14,15,20)"
# cur.execute(w)
# ret = cur.fetchall()
# print(ret)
# conn.commit()

# 案例5.  查询没有什么什么的时候就是,如果是一个空的就可以用 is null 判断

w = "select * from users"
cur.execute(w)





for i in cur:
    print(i)
ret = cur.fetchall()
print(ret)
# cur.description  #返回域的名字
conn.commit()